![]() マイクロプロセッサシステムにおける命令フェッチングの優先順位付け
专利摘要:
マルチスレッドプロセッサにおける複数の実行命令スレッドの各々に関する命令のフェッチングに優先順位を付けるための方法及びシステムを提供する。命令は、少なくとも1つの命令のソースから得られる。個々のスレッドは、実行のために命令バッファ(34)内にバッファされたいくつかのスレッドを有する。現在バッファされている命令の数に基づいて個々のスレッドの第1のメトリックが決定される。次に、個々のスレッドに関して第2のメトリックが決定され、これは実行ベースのメトリックである。第1及び第2のメトリックからスレッドの優先順位が決定され、命令を要求している決定優先順位の最も高いスレッドに対してソースから命令がフェッチされる。 公开号:JP2011511378A 申请号:JP2010545556 申请日:2009-02-09 公开日:2011-04-07 发明作者:アンドリュー ウェバー 申请人:イマジネイション テクノロジーズ リミテッド; IPC主号:G06F9-38
专利说明:
[0001] 本発明は、マイクロプロセッサシステムにおける命令フェッチングの優先順位付けに関し、特にマルチスレッドマイクロプロセッサシステムにおけるこの実装に関する。] 背景技術 [0002] 本発明者らの欧州特許出願EP0891588号には、複数のデータ入力と複数のデータ出力との間でデータ処理手段を介して複数の実行スレッドをルーティングするマルチスレッドマイクロプロセッサ及びデータ処理管理システムについての記載がある。データ処理手段はデータ記憶手段にアクセスすることができ、システムは、実行できるルーティング動作及びデータ処理動作を繰り返し決定して、ルーティング及びデータ処理動作の少なくとも一方の実行をそれぞれのクロックサイクルで開始する。] [0003] このようなシステムでは、メモリ管理ユニットを使用して、内部メモリキャッシュ又は外部メモリのいずれかからデータをフェッチする。通常、外部メモリは単一のデータ経路しか持たず、従ってメモリプレアービタを使用して、メモリからのデータに関して異なるスレッドからの要求間でアービトレーションを行う。] [0004] 本発明者らの欧州特許出願EP1738259号では、実行中の様々なスレッドに付随する様々なメトリックを使用してメモリアービトレーションを改善するためのスキームを提案している。] 発明が解決しようとする課題 [0005] 上述した種類のマルチスレッドプロセッサに対する改善として、本発明者らが「スーパースレッディング」と呼ぶ概念が導入されてきた。この概念では、所与のクロックサイクルで2以上の実行スレッドに対して命令が出される。全ての実行スレッドに対する命令を単一のクロックサイクルで出すことができ、4スレッドの実施構成では最大で1クロックサイクル当たり4つの命令が出される。しかしながら、このような実施構成は、全ての実施可能なスレッドが、利用可能ないつでも実行できる命令を有している場合にしか完全に利用されることはない。] [0006] マルチスレッドプロセッサのいくつかの実施構成では、例えば1つのスレッドに対して8つまでの命令を保持できる命令バッファがスレッドに提供される。この命令バッファは命令フェッチルーチンを使用することによって満たされ、この命令フェッチルーチンは、使用される現在の命令に先だって命令をフェッチすることができ、さらに命令によって生じ得る分岐又はハードウェアループ予測などの動作も決定できることが好ましい。] [0007] 複数のスレッドを利用する場合、通常、命令データをフェッチできるソースは1つ又は2つしか存在しない。これらは、命令キャッシュ及び組み込み命令RAMメモリである。したがって、4つの実行スレッドを有する装置では、命令データのソースよりも多くのスレッドが存在するため、スレッド間アービトレーションを実施して命令データへのアクセスを最適化することが必要となる。] 課題を解決するための手段 [0008] 本発明の好ましい実施形態は、異なる実行スレッドのための命令フェッチング間の効率的なアービトレーションの問題に対処する一方で、できるだけ多くのスレッドがそのバッファ内に次の実行のための少なくとも1つの命令を有することを確実にしようと試みる。] [0009] 本発明の1つの態様によれば、少なくとも1つの命令ソースからの、マルチスレッドプロセッサシステムにおける複数の実行命令スレッドの各々に対する命令のフェッチングに優先順位を付ける方法が提供され、この方法は、個々のスレッドに関して、そのスレッドでの実行のために現在バッファされている命令の数に基づいて第1のメトリックを決定するステップと、個々のスレッドに関して実行ベースの第2のメトリックを決定するステップと、第1及び第2のメトリックからスレッドの優先順位を決定するステップと、命令を要求している決定優先順位の最も高いスレッドのソースから命令をフェッチするステップとを含む。] [0010] 本発明の上記の及びその他の態様は、ここで参照すべき添付の特許請求の範囲で定義される。] [0011] 以下、添付図面への参照の一例として本発明の好ましい実施形態の詳細な説明を示す。] 図面の簡単な説明 [0012] 本発明を具体化するマルチスレッドプロセッサを示す図である。 図1のシステムで使用する命令フェッチサブシステムを示す図である。 図2の命令フェッチサブシステムで使用する命令フェッチユニットを示す図である。 図2の命令フェッチサブシステムと共に使用するプライオリティアービタを示す図である。] 図1 図2 実施例 [0013] 図1に示すシステムはマルチスレッドプロセッサコアを含む。このマルチスレッドプロセッサコアは、各々が命令フェッチユニット2を介して命令を提供するいくつかのスレッドを実行することができる。複数の実行スレッドの各々により実行される命令は、各スレッドごとに1つのスレッド命令フェッチユニット2によりフェッチされる。システムはあらゆる数のスレッドを有することができるが、現在では通常2又は4が使用される。一般に、これらのスレッドは、スレッド命令スケジューラ4を介してこれらの命令を出す能力に従って並行して動作するように構成されるが、個々のクロックサイクルで1つのスレッドのみが実行できるシステムでこれらを使用することもできる。本例では2つの命令ソースが存在し、命令キャッシュ6が外部メモリから命令を読み出し、コアコードメモリ8が、オペレーティングシステム命令及びこの種のその他の命令を記憶する。命令キャッシュとスレッド命令フェッチユニットとの間にはアービトレータが位置し、コアコードメモリ8とスレッド命令フェッチユニットとの間にはさらなるアービトレータが位置する。このアービトレータを使用して、いずれのスレッドが次に個々の命令ソースから命令を読み出すべきかを決定する。] 図1 [0014] この例では、スレッド命令スケジューラ4が、この図では演算/論理ユニット(ALU)12で表される4つの実行パイプラインの各々に命令を出す。これらが複数の実行スレッドを実行する。] [0015] 実行スレッド上のデータメモリに対する要求が命令として開始され、この命令は出された後に、要求をデータキャッシュ14へルーティングするか、又はRAMコアコードデータメモリ16へルーティングするかの決定ポイントに命令スケジューラを介して渡される。MMU18が、データキャッシュ14及び命令キャッシュ6からの要求を処理して外部メモリからデータを読み出す。] [0016] この構成の変形例として、コードとデータとの間でRAMを共有することができる。しかしながら、この場合実施構成が複雑になり、現在では使用されていない。当然ながら実行ユニット間には、本発明の表現を理解する必要がないという理由で明確化のためにこの図には示していない多くの相互接続が存在する。] [0017] 完全な実施構成では、キャッシュサブシステム3の代わりにアクセスできる少量のオンチップRAMを組み込むことができる。いくつかのシステムでは、命令RAM及びデータRAMも組み込むことができる。] [0018] マルチスレッドプロセッサは多くの他の文献に記載されており、当業者には周知であろう。本明細書で説明する本発明の実施形態は、好ましくは2以上のスレッドに対する命令をあらゆる所与のクロックサイクルで出すことができる命令スケジューラに供給するための命令のフェッチの優先順位付けに焦点を合わせている。本発明を具体化する適当なシステムのブロック図を図2に示す。この図は、命令フェッチサブシステムにおける主要素を全て示している。] 図2 [0019] この実施形態では2つの命令データソースが存在するが、これは1つのみであっても又は3以上であってもよい。これらは、命令キャッシュ20及びオンチップRAM22であり、オンチップRAM22は、実行命令スレッドの様々なスレッド上で実行される必要があり得るマイクロプロセッサのための組み込み命令を搭載する。スレッドが命令を要求した場合、命令キャッシュ20又はオンチップRAM22のいずれかから命令をフェッチする必要がある。命令を要求するスレッドは、利用可能な命令ソースの1つ、すなわち要求された命令を含むソースへこの要求を送信する。個々のスレッドは、クロックサイクルにつき1つの命令フェッチしか出すことができない。] [0020] 2つの命令ソースが存在する場合、異なるスレッドが別のものとして個々の命令ソースに同時にアクセスすることができる。命令キャッシュ20又はオンチップRAM22のいずれかから命令にアクセスすべきスレッドを決定するために、個々の命令ソースは、これらとスレッドの各々の命令フェッチユニットとの間に結合されたプライオリティアービタ24を有する。] [0021] 個々のプライオリティアービタは、スレッドの各々(スレッド0〜スレッドn)の命令フェッチユニット26に結合される。この接続を介して、プライオリティアービタは、命令に対する要求を関連する優先順位付けデータと共に受け取り、フェッチされた命令を命令フェッチユニット26に提供することができる。] [0022] 個々の命令フェッチユニット26は命令バッファを含み、この命令バッファは、命令デコーダ及びリソース連動ユニット28に供給する準備が整っている命令を8つまで保持することができ、その後命令スケジューラ30に命令を出して、この命令スケジューラ30がさらに個々の命令をプロセッサに渡して命令が実行される。] [0023] プライオリティアービタ24は、個々のスレッドの命令スレッドフェッチユニット26から、命令フェッチユニット26が命令バッファ内に、又は命令バッファ内にロードする処理において残した命令データがいくつ存在するかについての測定値、すなわち現在バッファ済みの命令の数に関するデータを受け取ることによって動作する。したがって、命令バッファが8つの命令を含むことができ、現在のところ5つの命令を含んでいる場合、現在スレッドが5つのバッファ済み命令(又はそのバッファ内に3つのさらなる命令用のスペース)を有する旨を示すデータがプライオリティアービタへ送信される。次に、プライオリティアービタは、他のスレッドから受け取ったデータとこのデータを比較して、スレッドの優先順位を決定する。その後、プライオリティアービタは、優先順位が最も高く命令の要求も行っているスレッドに優先権を与える。] [0024] プライオリティアービタ24は、この命令を出すための第1の優先順位付けの測定値をさらなる測定値と組み合わせることができる。この第2の測定値は、スレッドに与えられる総合的な優先順位のより高度な測定値である。通常、この測定値は、スレッドのいくつかの異なる特性の組み合わせである。これらの特性は、スレッドを実行しなければならない期限であるデッドラインカウント、スレッドの実行が最初に要求されてからの遅延である遅延カウント、これから実行すべき命令の数、及びスレッドに与えられる公称優先順位である優先順位を含むことができる。デッドラインカウントは、スレッドの実行をいつ完了させる必要があるかを決定するので、これらの中で最も重要である。この種の測定値では、スレッドの優先順位に関するその他の要素を使用することもできる。] [0025] したがって、本発明の好ましい実施形態では、個々のプライオリティアービタ24が、命令の必要性に関する優先順位の測定値、すなわちスレッドの命令バッファの充満度に基づく測定値と、いくつかの異なる因子に基づくことができる総合的なスレッドの優先順位とを組み合わせる。これらを使用して、個々のプライオリティアービタが、命令キャッシュ又はオンチップRAMのいずれかから個々のサイクルで命令を要求する場合、いずれの所与のサイクルにおいても、決定優先順位が最も高いスレッドが命令キャッシュ又はオンチップRAMに適宜アクセスできるスレッドとなるようにスレッドの優先順位の順番リストを決定することができる。スレッドは、一度にこれらの命令ソースの1つにしかアクセスしない。スレッドが両方から同時に命令をフェッチすることはできない。] [0026] この例では、命令キャッシュに1つ及びオンチップRAMに1つの、2つのプライオリティアービタを示している。各々には同じメトリックが提供される。各々が、クロックサイクルごとに同じ優先順位リストを生成する。しかしながら、これらのプライオリティアービタは、関連するソースから命令を要求する相互に排他的なスレッドの組を有する。単一のソースを含むあらゆる数の命令ソースによって本発明の実施形態を実施することができる。] [0027] より具体的には、本発明の実施形態は、2又はそれ以上のスレッド(通常は4)を有するマルチスレッドプロセッサ上で実行される。マルチスレッドプロセッサとは、実行ユニット、キャッシュ及びメモリを備え、付加的に複数の実行命令のスレッドの概念を組み入れたマイクロプロセッサのことである。スレッドは、マイクロプロセッサのリソースを利用するように作用する数々の命令で構成され、これらのリソースのいくつかはこの特定のスレッドに固有のものとすることができ、いくつかはスレッド間で共有することができる。リソースは、キャッシュ及び関連メモリ内のレジスタ、帯域幅、及び空間を含む。] [0028] マルチスレッドプロセッサにおける個々のスレッドは固有のプログラムカウンタを有し、これをさらに使用して、このスレッドの命令フェッチを制御する。したがって、全てのスレッドが、命令メモリ又は命令キャッシュから命令をフェッチしてこのスレッド上で実行するための1つのハードウェアを有する。個々のスレッドが固有の命令メモリ又は命令キャッシュを有することは可能であるが、全てのスレッド間で命令メモリ及び命令キャッシュを共有し、メモリ又はキャッシュへのアクセス権に関してこれらの間でアービトレーションを行うことにより、コスト及びサイズが最小化される。] [0029] ラウンドロビンなどの単純なアービトレーション法は、ある程度まで十分機能することができる。異なるスレッドが異なる作業負荷を有し、最も需要の高いスレッドが命令にアクセスする際に他のスレッドよりも上の優先順位を得るようにスレッドの優先順位間のバランスを取る必要がある場合に困難が生じる。] [0030] 上述した本発明者らの欧州特許出願第EP1738259号では、より高度なアービトレーションの1つの形について説明しており、この場合、ハードウェアが時間に伴うスレッドの負荷をモニタし、これを定められたリソース要件と照合する。この欧州特許では、この形を使用してメモリなどのリソースへのアクセスを決定する。] [0031] 本発明者らは、2以上のスレッドがあらゆる所与のサイクルで命令を出すことができることを理解している。これが行われるためにはいくつかの基準を満たす必要があり、まず第1に、全てのスレッドが発行可能な命令を有している必要があり、第2に、2つのスレッドが同じリソースを同時に使用することを試みないようにこれらの命令が互いに両立し得る必要がある。この状況では、リソースが、実行ユニット、データキャッシュアクセス、コプロセッサアクセスなどをカバーする。したがって、n個のスレッドのシステムでは、単一のサイクル中に0とnの間のあらゆる数のスレッドが命令を出し得る。] [0032] 特に2以上のスレッドが同時に命令を実行できるスーパースレッディングプロセッサでは、いずれのスレッドがいずれのリソースを必要としているかを判断するための処理が複雑となる。しかしながら、個々の命令を実行予定候補として命令スケジューラ4に対して利用可能にする前のプレデコード段階を通じてこれらの命令を渡すことにより判断が開始される。このプレデコード段階を使用して、命令が必要とするリソースを選出する。] [0033] スーパースレッディングプロセッサでは、減少したこれらのリソース要件の組がテストされる。単純な例を選択すると、スレッドが、実行ユニットを使用してデータメモリのフェッチ要求を送信し、いくつかのデータをロード又は記憶したいと望むことがある。別のスレッドが、同じ実行ユニット又はデータメモリポートを使用してデータメモリをフェッチしたいと望む場合、第1のスレッドの実行と両立しなくなることにより、これらの2つは同時には発行されなくなる。しかしながら、別のスレッドが、これらのリソースを必要としないプログラム分岐などの異なる命令セットを実行したいと望む場合には両立可能と見なされ、スレッドを使用してデータメモリのフェッチを要求するのと同時に、実行のために別のスレッドが発行される。] [0034] 適切な判断を行うために、存在するスレッドは全て、互いに並行してテストされた定められた全てのリソース要件を有する。この処理は、スレッドAがスレッドBと両立できる場合には定義によりスレッドBがスレッドAと両立することもできるという点で対称的である。したがって、このテストは、個々のスレッドのペア間で一度行うだけでよい。] [0035] この両立性テストの結果、個々のスレッドのペアリングに対してフラグが生成され、このフラグの状態により、スレッドに両立性があるかどうかが判断される。したがって、個々のスレッドを他の全てのスレッドに対してテストした結果、個々のスレッドのペアごとに両立性フラグが生成され、この状態により、スレッドが実行に関して両立性があるかどうか、すなわち同時にリソース要件と重複するスレッドが2つのみであるかどうかが判定される。] [0036] また、スレッドはランク付けされた順序を有する。両立性状態の情報を使用して、より低いランクの各々を順々に検討することにより、この順序における個々のランク、最終的な両立性の設定が作成されるようになる。あるランクが、優先順位の最も高いスレッドと両立性がある場合、このスレッドが実行のための設定に追加され、両立性がなければ、このスレッドはスキップされ次のスレッドが検討される。実際の命令の予定への最終ステップでは、ランキングの最も高い発行できるスレッドが決定され、すなわちリソース又はレジスタが利用可能になるのを待つことはない。その後、このスレッドが、そのスーパースレッディングセット(このスレッドと共に実行できる他のスレッド)と共に発行される。] [0037] スレッドが同時に命令を出す能力を最大にするためには、できる限り全てのスレッドが発行可能な命令を有していることが重要である。したがって、プライオリティアービタは、スレッド命令バッファ内に何も有していない、又はスレッド命令バッファのスレッド命令外で実行されているスレッドのフェッチング命令に適宜優先権を与えるように構成される。この結果、これらのスレッドは、総合的な優先順位ランキングがより高いスレッドを含む命令をフェッチする際に他のスレッドよりも優先される。] [0038] スレッド命令フェッチユニットの好ましい実施形態を図3に示している。個々のスレッドには、このような命令フェッチユニットが提供される。命令キャッシュから命令を取得することに関連してこの特定の例を示しているが、同様にこの例を図2に示すようなオンチップRAMと共に使用することもできる。] 図2 図3 [0039] 命令フェッチユニットは命令アドレス供給ユニット32を含み、これが命令に対する要求を命令キャッシュへ送信する。命令キャッシュ内で命令を検索する時間に起因して、命令アドレス供給ユニット32からの命令の発行間にはいくらかの待ち時間が存在し、数々の発行命令から待ち時間を低減又は全く排除するのに十分な頻度で命令を要求するように命令フェッチエンジンを構成することが好ましい。] [0040] 非マルチスレッドマイクロプロセッサでは、命令の消費が最大要求レートよりも低い場合、命令フェッチのパイプラインが失速することがある。しかしながら、スレッド間で命令キャッシュを共有するマルチスレッドシステムでは、このような失速によりスレッド間に依存関係が生じ、いくつかの命令を要求したもののこれらを使用していないスレッドがシステム内の全ての他のスレッドを失速得るようになるので、通常このような失速が起きる可能性はない。したがって、個々のスレッド命令フェッチユニットは、一定数の命令要求の戻りデータを保持できる命令バッファを組み込んでいる。命令バッファ内に存在する記憶できるスロットと同じ数の命令要求を送信中とすることができる。命令バッファは34で示している。命令バッファを経て、命令は、命令データ供給ユニット36を介して命令スケジューラに渡される。] [0041] 本発明の好ましい実施形態では、38における命令バッファの充満度に関するデータが、スレッド命令フェッチユニットから抽出される。このデータは、命令バッファ内で利用可能なスロットの数を示すデータ値、又はいくつのスロットがすでに占有されているかを示すデータ値であってもよい。このデータは、図2に示す種類のプライオリティアービタ24に提供され、このプライオリティアービタがこのデータを使用して、他のスレッドと比較して命令が不足しつつあるスレッドの命令フェッチに優先順位を付ける。この結果、このスレッドの命令バッファにできるだけ早くさらなる要求が提供されて、命令スケジューラに対して大量の命令が利用可能となることを確実にする。] 図2 [0042] したがって、いくつかのスレッドの各々に図3の命令フェッチユニットを使用して、どのスレッドの命令バッファが最も多くの命令を有し、どれが最も少ないかを示すデータを提供することができる。これらのデータがプライオリティアービタによって比較され、優先順位付けリストが生成される。この結果、命令バッファ内の命令が最も少ないスレッドを、(このスレッドが命令を要求しているとした場合)次のクロックサイクルの次の命令フェッチに対して優先させることができる。同時に、スレッドの少なくとも1つが命令スケジューラに命令を出し、この結果さらに次のクロックサイクルの優先順位を変更することができる。したがって、優先順位が最も高く、命令ソースからの命令も要求しているスレッドが、命令をフェッチすることになる。] 図3 [0043] 上述したように、このシステムは、スレッドを個々の命令フェッチユニット内の命令バッファ34の充満度に基づく順序にソートすることにより、スレッドに優先順位を付ける。本発明の好ましい実施形態は、付加的なアービトレーションのレベルを追加することによりこれを修正する。] [0044] 図2に示す種類のプライオリティアービタを図4にさらに詳細に示す。プライオリティアービタ24は命令要求を受け取り、その関連するオンチップRAM又は命令キャッシュからの命令を、マルチスレッドプロセッサにおいて提供されるそれぞれのスレッドの命令フェッチエンジンの各々に与える。プライオリティアービタへの入力は、それぞれの命令バッファの充満度により個々のスレッドの命令フェッチエンジンに関して決定された優先順位である。この入力を別個のユニットで得ることができる。或いは、関連データ値をプライオリティアービタ自体に提供し、その後このプライオリティアービタが必要な優先順位を計算するようにしてもよい。] 図2 図4 [0045] 個々の命令フェッチユニットは、自身の命令バッファを満たすのに十分な命令しかフェッチできないので、命令バッファが満たされたスレッドは、各サイクルにおいて新しいフェッチを要求することはない。したがって、プライオリティアービタは、新しい命令を要求している最も高い優先順位のスレッドを、このスレッドの要求信号を介して決定する。] [0046] プライオリティアービタ24により決定された、又は別個のユニットから受け取った優先順位は、発明者らが自動MIPSアロケーション(AMA)メトリックと呼ぶ上述した優先順位に関する付加的な測定値と組み合わされる。これは、例えば、デッドラインカウント、遅延カウント、及びスレッドの実行に影響を与えるその他の考えられる因子の組み合わせであってもよい。事実上、命令バッファの充満度から決定されたプライオリティメトリックと組み合わせることができるのは実行ベースのメトリックである。] [0047] AMAメトリックは、単純なスレッドの順序に容易化され、すなわちこれはソートしたスレッドのリストである。これは、バッファ容量に関するデータのリストを有する個々のスレッドの各々の命令バッファの充満度とは対照的である。次に、プライオリティアービタ24により、これらの2つの情報を使用して優先順位が決定される。] [0048] バッファ容量は極めて重要であり、リストが形成され、最も満たされたスレッドの命令バッファから最も空に近いものへの順序でソートされる。最も空に近いものに高い優先順位がある。スレッドが全て異なるバッファ充満度を有する場合、本発明の好ましい実施形態では、これで処理が終了する。AMAメトリックは、同じバッファ充満度を有するスレッドの正しい順序を決定するためにのみ使用される。] [0049] 例えば、4つのスレッドを有し、各々の命令バッファが空である場合、各々に命令がフェッチされる必要性は等しい。したがって、次にアービタは、個々のスレッドのAMAメトリックについて検討する必要がある。これらは、3、2、1、及び0にランク付けされる。3を最も高い優先順位のメトリックとし、0を最も低い優先順位のメトリックとした場合、3のAMAを有するスレッドが、次の命令フェッチに対して最も高い優先順位を有することになる。] [0050] 別の例では、スレッド0、1、2、及び3の命令に対する必要性にそれぞれ1、2、2、0の優先順位が与えられ、個々のスレッドのAMAメトリックがそれぞれ3、2、1、及び0である場合、最終的な優先順位は、1、3、2、及び0になる。これは、スレッド1及び2が命令に対する最も高い必要性を有し、これらの2つのスレッドのうち、スレッド1は3のAMA優先順位を有し、スレッド2は2のAMA優先順位を有するからである。] [0051] 全てのスレッドが異なる必要性を有する場合、命令をフェッチする順序が決定され、AMAメトリックは命令をフェッチする順序には影響を与えない。プライオリティアービタは、より速い優先順位の決定を可能にするので、現在ではハードウェアに実装することが好ましい。しかしながら、ソフトウェアの方がより速くなる場合、アービタをソフトウェアの形で実装することもでき、実際にいくつかのアプリケーションでは、現在ソフトウェアの実施形態により許容できるパフォーマンスが与えられることがある。動作時には、スレッドの各々を個々のクロックサイクルで内部的にチェックして、これらがいずれかの特定のメモリから命令を要求しているかどうかを判定する。最も高い優先順位のスレッドが命令を要求しており、これが何らかの方法でブロックされていなければ要求が出される。これは、将来のサイクルで使用される必要なメトリックを変えることになる。最も高い優先順位のスレッドが要求を作成していなければ、他の全ての優先順位を順々に検討して、これらを使用できるかどうかを確認する。命令を要求できるスレッドがない場合、このサイクルでは要求は作成されない。] [0052] 命令がフェッチされると、この命令はオンチップRAM又は命令キャッシュからスレッド命令フェッチユニットに直接供給される。命令が命令フェッチユニットに到達する順序は、フェッチされる命令のソース及び個々のソース内の命令の場所によって様々であってもよい。] [0053] 命令キャッシュから又は専用の命令メモリから命令をフェッチできる図2のシステムを使用して、異なるスレッドが命令キャッシュ及び命令メモリにそれぞれ同時にアクセスできることが理解されるであろう。これには、2つのプライオリティアービタが必要となる。2つの装置間でアービタの優先順位リストを共有することができる。] 図2 [0054] したがって、好ましい実施形態では、スレッドを実行するための命令フェッチユニットの各々に結合された個々の命令ソースごとにアービタが提供される。これらは、命令を要求する個々のスレッドから様々な時点で命令フェッチ要求を受け取り、要求間でアービテーションを行っていずれのスレッドがこのソースから命令を受け取るべきかを決定する。個々のスレッドは、1クロックサイクル当たり1つの命令フェッチしか出すことができない。スレッドは、異なるソースからの命令を要求しないと同時に、依然として第1のソースからの未処理の要求を有していることが好ましい。] [0055] 20命令キャッシュ 22オンチップRAM 24プライオリティアービタ 26命令フェッチ 28命令デコード及びリソース連動 30 命令スケジューラ]
权利要求:
請求項1 少なくとも1つの命令ソースからの、マルチスレッドプロセッサシステムにおける複数の実行命令スレッドの各々に対する命令のフェッチングに優先順位を付ける方法であって、個々のスレッドに関して、そのスレッドでの実行のために現在バッファされている命令の数に基づいて第1のメトリックを決定するステップと、個々のスレッドに関して実行ベースの第2のメトリックを決定するステップと、前記第1及び第2のメトリックから前記スレッドの優先順位を決定するステップと、命令を要求している決定優先順位の最も高い前記スレッドの前記ソースから命令をフェッチするステップと、を含むことを特徴とする方法。 請求項2 前記第1のメトリックが前記優先順位を最初に決定し、前記第2のメトリックが、前記第1のメトリックからの競合が存在するスレッド間の優先順位を決定する、ことを特徴とする請求項1に記載の方法。 請求項3 スレッドが、個々のクロックサイクルで命令ソースから命令を要求することができる、ことを特徴とする請求項1又は請求項2に記載の方法。 請求項4 スレッドが、複数の命令ソースのいずれか1つから命令を要求することができる、ことを特徴とする請求項1から請求項3のいずれかに記載の方法。 請求項5 第1の命令ソースから命令を要求したスレッドは、前記第1の要求が完了するまで第2の命令ソースから命令を要求することができない、ことを特徴とする請求項4に記載の方法。 請求項6 2以上のスレッドが、個々のクロックサイクルで命令を実行することができる、ことを特徴とするいずれかの請求項1から請求項5のいずれかに記載の方法。 請求項7 前記スレッドが、自身のバッファ内に命令を含むいずれのスレッドを個々のクロックサイクルで実行すべきかを決定するための実行ランクの順序を有する、ことを特徴とする請求項6に記載の方法。 請求項8 少なくとも1つの命令ソースからの、マルチスレッドプロセッサシステムにおける複数の実行命令スレッドの各々に対する命令のフェッチングに優先順位を付けるシステムであって、個々のスレッドに関して、そのスレッドでの実行のために現在バッファされている命令の数に基づいて第1のメトリックを決定するための手段と、個々のスレッドに関して実行ベースの第2のメトリックを決定するための手段と、前記第1及び第2のメトリックから前記スレッドの優先順位を決定するための手段と、命令を要求している決定優先順位の最も高い前記スレッドの前記ソースから命令をフェッチするための手段と、を備えることを特徴とするシステム。 請求項9 前記優先順位を決定するための手段が、最初に前記第1のメトリックから優先順位を決定し、前記第2のメトリックを使用して、前記第1のメトリックからの競合が存在するスレッド間の優先順位を決定する、ことを特徴とする請求項8に記載のシステム。 請求項10 スレッドが、個々のクロックサイクルで命令ソースから命令を要求することができる、ことを特徴とする請求項8又は請求項9に記載のシステム。 請求項11 スレッドが、複数の命令ソースのいずれか1つから命令を要求することができる、ことを特徴とする請求項8、請求項9、又は請求項10のいずれかに記載のシステム。 請求項12 第1の命令ソースから命令を要求したスレッドは、前記第1の要求が完了するまで第2の命令ソースから命令を要求することができない、ことを特徴とする請求項11に記載のシステム。 請求項13 2以上のスレッドが、個々のクロックサイクルで命令を実行する、ことを特徴とする請求項8から請求項12のいずれかに記載のシステム。 請求項14 スレッドが、自身のバッファ内に命令を含むいずれのスレッドを個々のクロックサイクルで実行すべきかを決定するための実行ランクの順序を有する、ことを特徴とする請求項13に記載のシステム。
类似技术:
公开号 | 公开日 | 专利标题 JP6243935B2|2017-12-06|コンテキスト切替方法及び装置 Wang et al.2016|Simultaneous multikernel GPU: Multi-tasking throughput processors via fine-grained sharing US10379887B2|2019-08-13|Performance-imbalance-monitoring processor features Ausavarungnirun et al.2012|Staged memory scheduling: Achieving high performance and scalability in heterogeneous systems Sethia et al.2015|Mascar: Speeding up GPU warps by reducing memory pitstops US9690581B2|2017-06-27|Computer processor with deferred operations US8621487B2|2013-12-31|Virtual processor methods and apparatus with unified event notification and consumer-producer memory operations US8732714B2|2014-05-20|Method for reorganizing tasks for optimization of resources US7155600B2|2006-12-26|Method and logical apparatus for switching between single-threaded and multi-threaded execution states in a simultaneous multi-threaded | processor KR101839544B1|2018-03-16|이종 코어의 자동 부하 균형 US9524164B2|2016-12-20|Specialized memory disambiguation mechanisms for different memory read access types US5742782A|1998-04-21|Processing apparatus for executing a plurality of VLIW threads in parallel Paolieri et al.2009|Hardware support for WCET analysis of hard real-time multicore systems JP5104863B2|2012-12-19|演算処理装置及び演算処理装置の制御方法 US7730291B2|2010-06-01|Symmetric multiprocessor operating system for execution on non-independent lightweight thread contexts JP4693326B2|2011-06-01|組込み型プロセッサにおいてゼロタイムコンテクストスイッチを用いて命令レベルをマルチスレッド化するシステムおよび方法 US8266620B2|2012-09-11|Symmetric multiprocessor operating system for execution on non-independent lightweight thread contexts JP5678135B2|2015-02-25|オペレーティング・システム介入なしにos隔離シーケンサー上でスレッドをスケジューリングする機構 US8656401B2|2014-02-18|Method and apparatus for prioritizing processor scheduler queue operations JP5166877B2|2013-03-21|ハードウェアマルチスレッドシステムおよび方法 KR100880470B1|2009-01-28|스레드 라이브록 유닛 US6732242B2|2004-05-04|External bus transaction scheduling system DE602004006858T2|2008-02-14|Abrechnungsverfahren und -schaltung zur bestimmung der pro-thread-nutzung von prozessorbetriebsmitteln in einem simultanen multithread-prozessor | US9898409B2|2018-02-20|Issue control for multithreaded processing US8327363B2|2012-12-04|Application compatibility in multi-core systems
同族专利:
公开号 | 公开日 GB2457265A|2009-08-12| EP2240850B1|2016-08-10| US20160232007A1|2016-08-11| US20090210660A1|2009-08-20| US9348600B2|2016-05-24| WO2009098489A1|2009-08-13| GB0802314D0|2008-03-12| EP2240850A1|2010-10-20| JP5607545B2|2014-10-15| GB2457265B|2010-06-09| US9870228B2|2018-01-16|
引用文献:
公开号 | 申请日 | 公开日 | 申请人 | 专利标题 JPH07281954A|1994-04-11|1995-10-27|Hitachi Ltd|高速pcシステム| JP2004532444A|2001-02-19|2004-10-21|イマジネイションテクノロジーズリミテッド|マルチスレッドプロセッサ上の優先順位及び命令速度の制御| JP2007533020A|2004-04-16|2007-11-15|イマジネイションテクノロジーズリミテッド|動的負荷バランシング| US20060101238A1|2004-09-17|2006-05-11|Pradip Bose|Adaptive fetch gating in multithreaded processors, fetch control and method of controlling fetches| JP2006195705A|2005-01-13|2006-07-27|Seiko Epson Corp|プロセッサ| US20060179276A1|2005-02-04|2006-08-10|Mips Technologies, Inc.|Fetch director employing barrel-incrementer-based round-robin apparatus for use in multithreading microprocessor|JP2014211743A|2013-04-18|2014-11-13|株式会社デンソー|マルチコアプロセッサ| US10031751B2|2015-03-27|2018-07-24|Fujitsu Limited|Arithmetic processing device and method for controlling arithmetic processing device|ES2143490T3|1992-08-12|2000-05-16|Advanced Micro Devices Inc|INSTRUCTION DECODER.| GB2311882B|1996-04-04|2000-08-09|Videologic Ltd|A data processing management system| US6938147B1|1999-05-11|2005-08-30|Sun Microsystems, Inc.|Processor with multiple-thread, vertically-threaded pipeline| JP3845043B2|2002-06-28|2006-11-15|富士通株式会社|命令フェッチ制御装置| US7657883B2|2005-02-04|2010-02-02|Mips Technologies, Inc.|Instruction dispatch scheduler employing round-robin apparatus supporting multiple thread priorities for use in multithreading microprocessor| US7853777B2|2005-02-04|2010-12-14|Mips Technologies, Inc.|Instruction/skid buffers in a multithreading microprocessor that store dispatched instructions to avoid re-fetching flushed instructions|TWI474280B|2010-04-21|2015-02-21|Via Tech Inc|增進繪圖處理單元之總處理量的方法與系統| CN101325063B|2007-06-12|2011-02-16|建兴电子科技股份有限公司|全息储存系统中寻找定位点位置的方法| JP5173711B2|2008-09-30|2013-04-03|ルネサスエレクトロニクス株式会社|マルチスレッドプロセッサ及びそのハードウェアスレッドのスケジュール方法| US8904115B2|2010-09-28|2014-12-02|Texas Instruments Incorporated|Cache with multiple access pipelines| US9189283B2|2011-03-03|2015-11-17|Hewlett-Packard Development Company, L.P.|Task launching on hardware resource for client| US9645823B2|2011-03-03|2017-05-09|Hewlett-Packard Development Company, L.P.|Hardware controller to choose selected hardware entity and to execute instructions in relation to selected hardware entity| US8738830B2|2011-03-03|2014-05-27|Hewlett-Packard Development Company, L.P.|Hardware interrupt processing circuit| US20170139716A1|2015-11-18|2017-05-18|Arm Limited|Handling stalling event for multiple thread pipeline, and triggering action based on information access delay| US10353711B2|2016-09-06|2019-07-16|Apple Inc.|Clause chaining for clause-based instruction execution|
法律状态:
2012-02-10| A621| Written request for application examination|Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20120209 | 2013-08-29| A977| Report on retrieval|Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20130829 | 2013-09-05| A131| Notification of reasons for refusal|Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20130904 | 2013-12-05| A601| Written request for extension of time|Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20131204 | 2013-12-12| A602| Written permission of extension of time|Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20131211 | 2014-03-05| A521| Written amendment|Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20140304 | 2014-03-20| A02| Decision of refusal|Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20140319 | 2014-07-18| A521| Written amendment|Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20140717 | 2014-07-28| A911| Transfer to examiner for re-examination before appeal (zenchi)|Free format text: JAPANESE INTERMEDIATE CODE: A911 Effective date: 20140725 | 2014-08-08| TRDD| Decision of grant or rejection written| 2014-08-14| A01| Written decision to grant a patent or to grant a registration (utility model)|Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20140813 | 2014-09-04| A61| First payment of annual fees (during grant procedure)|Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20140828 | 2014-09-05| R150| Certificate of patent or registration of utility model|Ref document number: 5607545 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 | 2017-09-05| R250| Receipt of annual fees|Free format text: JAPANESE INTERMEDIATE CODE: R250 | 2018-09-11| R250| Receipt of annual fees|Free format text: JAPANESE INTERMEDIATE CODE: R250 | 2019-09-03| R250| Receipt of annual fees|Free format text: JAPANESE INTERMEDIATE CODE: R250 | 2020-11-27| R250| Receipt of annual fees|Free format text: JAPANESE INTERMEDIATE CODE: R250 | 2021-08-25| R250| Receipt of annual fees|Free format text: JAPANESE INTERMEDIATE CODE: R250 |
优先权:
[返回顶部]
申请号 | 申请日 | 专利标题 相关专利
Sulfonates, polymers, resist compositions and patterning process
Washing machine
Washing machine
Device for fixture finishing and tension adjusting of membrane
Structure for Equipping Band in a Plane Cathode Ray Tube
Process for preparation of 7 alpha-carboxyl 9, 11-epoxy steroids and intermediates useful therein an
国家/地区
|